package slice

// Nodup 去除重复元素， 并将去重后的切片和去重个数返回
func Nodup[T comparable](src []T) []T {
	srcMap := ToMap(src)
	var res = make([]T, 0, len(src))
	for key := range srcMap {
		res = append(res, key)
	}
	return res
}

//func NodupAny[T any](src []T) []T {
//	n := len(src)
//	if n < 2 {
//		return n
//	}
//
//	left, right := 1, 1
//	for right < n {
//		if src[right] != src[right-1] {
//			src[left] = src[right]
//			left++
//		}
//		right++
//	}
//	return left
//}
